const rateLimit = require('express-rate-limit');

// 通用限流配置 - 每IP每分钟100次请求
const apiLimiter = rateLimit({
  windowMs: 60 * 1000, // 1分钟
  max: 50, // 限制每IP的请求数
  standardHeaders: true, // 返回RateLimit-*响应头
  legacyHeaders: false, // 禁用X-RateLimit-*响应头
  message: {
    code: 429,
    message: '请求过于频繁，请1分钟后重试'
  }
});

// 登录接口专用限流 - 更严格
const loginLimiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15分钟
  max: 5, // 每IP最多5次失败登录
  message: {
    code: 429,
    message: '登录尝试次数过多，请15分钟后重试'
  }
});

const globalLimiter = rateLimit({
  windowMs: 60 * 1000, // 时间窗口保持1分钟
  max: 1000, // 全局总请求限制改为1000次
  // 关键变更：使用固定键生成器实现全局计数
  keyGenerator: () => 'global_request_counter', // 所有请求共用一个计数器
  message: {
    code: 429,
    message: '服务请求已达上限，请1分钟后重试',
    retryAfter: 60
  },
  standardHeaders: true,
  legacyHeaders: false
});

module.exports = { apiLimiter, loginLimiter, globalLimiter };